#include <wx/wx.h>
#include <wx/string.h>
#include "main.h"
#include "ventanaPrincipal.h"


/*******************************************************
ACA SE VAN A DECLARAR LAS RUTINAS DE ATENCION DE EVENTOS
*******************************************************/
BEGIN_EVENT_TABLE(VentanaPrincipal, wxFrame)
    EVT_MENU(wxID_EXIT,  VentanaPrincipal::OnQuit)
    EVT_CLOSE(VentanaPrincipal::OnQuitX)
END_EVENT_TABLE()



/***** ESTA ES LA DEFINICION DE UNA wxFrame CON TODOS SUS PARAMETROS *****

wxFrame(wxWindow* parent, wxWindowID id, const wxString& title, const
wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style =
wxDEFAULT_FRAME_STYLE, const wxString& name = "frame")

*************************************************************************/

VentanaPrincipal::VentanaPrincipal(AdivinaLosColores* AApp, wxString title)
                : wxFrame(NULL, wxID_ANY, title) {

    //guardo la aplicación
    App = AApp;

    //creamos un menu simple
    wxMenu *fileMenu = new wxMenu;

    //agrega un string item al final del menu
    fileMenu->Append(wxID_EXIT, _T("&Salir\tAlt-F4"), _T("Termina el programa"));

    //declaramos y creamos la barra de menu
    wxMenuBar *menuBar = new wxMenuBar();

    //agrego el elemento a la barra de menu
    menuBar->Append(fileMenu, _T("&Archivo"));

    //le seteamos a VentanaPrincipal la barra de menu
    SetMenuBar(menuBar);


}


void VentanaPrincipal::Quit(){
    // true is to force the frame to close
    Close(true);//esto provoca un EVT_CLOSE
}








/* Como no queremos hacer nada más con este evento, ponemos lo de WXUNUSED. */
void VentanaPrincipal::OnQuit(wxCommandEvent& WXUNUSED(event)) {
    Quit();
}

/* Esta función es la que realmente cierra el programa y destruye todas las estructuras e información que así lo querieran. */
void VentanaPrincipal::OnQuitX(wxCloseEvent& WXUNUSED(event)) {

    /**************************************/
     /***** | Aqui todas las ordenes | *****/
     /***** |  previas al cerrado    | *****/
     /******V************************V******/
     // Por ejemplo
     // remove( "temporal.tmp" );
     /******A************************A******/
     /***** | Aqui todas las ordenes | *****/
     /***** |  previas al cerrado    | *****/
     /**************************************/

     Destroy();
}

